package com.yunshan.member.mapper;

import com.yunshan.member.domain.MemberSubCardInfo;
import com.yunshan.member.domain.ResultMember;
import com.yunshan.wechat.domain.UserInfoVo;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 副卡信息Mapper接口
 *
 * @author yunshan
 * @date 2025-01-17
 */
public interface MemberSubCardInfoMapper
{
    /**
     * 查询副卡信息
     *
     * @param id 副卡信息主键
     * @return 副卡信息
     */
    public MemberSubCardInfo selectMemberSubCardInfoById(Long id);

    /**
     * 查询副卡信息列表
     *
     * @param memberSubCardInfo 副卡信息
     * @return 副卡信息集合
     */
    public List<MemberSubCardInfo> selectMemberSubCardInfoList(MemberSubCardInfo memberSubCardInfo);

    /**
     * 新增副卡信息
     *
     * @param memberSubCardInfo 副卡信息
     * @return 结果
     */
    public int insertMemberSubCardInfo(MemberSubCardInfo memberSubCardInfo);

    /**
     * 修改副卡信息
     *
     * @param memberSubCardInfo 副卡信息
     * @return 结果
     */
    public int updateMemberSubCardInfo(MemberSubCardInfo memberSubCardInfo);

    /**
     * 删除副卡信息
     *
     * @param id 副卡信息主键
     * @return 结果
     */
    public int deleteMemberSubCardInfoById(Long id);

    /**
     * 批量删除副卡信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMemberSubCardInfoByIds(Long[] ids);

    /**
     * 查询副卡张数
     * @param id memberId
     * @return count
     */
    int selectCountByMemberId(Long id);

    /**
     * 根据登录手机号查询副卡信息
     * @param loginPhone 登录手机号
     * @return MemberSubCardInfo
     */
    MemberSubCardInfo selectUserInfoByLoginPhone(String loginPhone);

    /**
     * 预约通知详情
     * @param memberId 会员id
     * @return 结果
     */
    ResultMember selectResultMember(Long memberId);

    /**
     * 小程序用户查询用户信息
     * @param userId userId
     * @return 结果
     */
    UserInfoVo selectUniUserInfo(Long userId);

    /**
     * 根据用户id查询会员
     * @param userId 会员id
     * @return 结果
     */
    MemberSubCardInfo selectUserInfoByUserId(Long userId);

    /**
     * 根据手机号查询副卡信息
     * @param phone 手机号
     * @return MemberSubCardInfo
     */
    MemberSubCardInfo selectUserInfoByPhone(String phone);

    /**
     * 增加总消费
     * @param memberId 副卡id
     * @param amount 金额
     * @return 结果
     */
    int updateMemberSubTotalAmount(@Param("memberId")Long memberId, @Param("amount")BigDecimal amount);

    /**
     * 查询非销卡状态的副卡
     * @param memberSubCardInfo 副卡信息
     * @return 结果
     */
    List<MemberSubCardInfo> selectMemberSubCardStatusList(MemberSubCardInfo memberSubCardInfo);

    /**
     * 查询历史记录
     * @param memberSubCardInfo 副卡信息
     * @return 结果
     */
    List<MemberSubCardInfo> selectMemberSubCardInfoRecords(MemberSubCardInfo memberSubCardInfo);
}
